/*
* 作者: wupengxin
* 创建时间: 2016-09-17 10:45:11
* 说明: 使用SQLite数据库的ORM模型
*/
package common

import (
	"github.com/astaxie/beego/orm"
	_ "github.com/mattn/go-sqlite3"
	"strconv"
)


//用于保存读取文件的信息 保存文件的名称以及读取的文件的游标地址
type FileInfo struct {
	Id int `orm:"auto"`
	Filename string `orm:"size(1024)"`
	Seek int
}

func init()  {
	// 注册数据库驱动
	orm.RegisterDataBase("default", "sqlite3", "sqltest.db")
	// 注册数据模型表
	orm.RegisterModel(new(FileInfo))
	orm.RunSyncdb("default", false, true)
}

// 插入该记录到数据库 如果存在则更新 否则则创建
func (t *FileInfo)Create()  {
	ormer := orm.NewOrm()
	var maps []orm.Params
	num, _ := ormer.Raw("select id from file_info where filename=?", t.Filename).Values(&maps)

	if num == 0{
		// 说明没有该记录
		ormer.Insert(t)
		return
	}
	// 如果有该记录 更新这条记录
	t.Id, _ = strconv.Atoi(maps[0]["id"].(string))
	ormer.Update(t)
}

// 删除这条记录
func (t *FileInfo)Delete(){
	ormer := orm.NewOrm()
	var maps []orm.Params
	num, _ := ormer.Raw("select id from file_info where filename=?", t.Filename).Values(&maps)

	if num == 0{
		// 说明没有该记录
		return
	}
	// 如果有该记录 更新这条记录
	t.Id, _ = strconv.Atoi(maps[0]["id"].(string))
	ormer.Delete(t)
}

//删除该表中的所有数据
func (t *FileInfo)DropAll() {
	ormer := orm.NewOrm()
	ormer.Raw("delete from file_info").Exec()
	ormer.Commit()
}

